{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "Lesson_5-REVISED.ipynb",
      "provenance": [],
      "collapsed_sections": [
        "u60X7ANcCG2V"
      ]
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.7.1"
    },
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Wg1dayOgCGxK"
      },
      "source": [
        "# Урок 5"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "6PJL0hfnCGxS"
      },
      "source": [
        "# Линейные преобразования"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "EhSF0q9oCGxY"
      },
      "source": [
        "В этом уроке нам нужно будет вспомнить тему линейных пространств."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "OthBDHdrCGxa"
      },
      "source": [
        "\n",
        "Кроме введенных нами ранее операций для векторов (сложение, умножение на число, скалярное произведение) часто возникает необходимость производить над векторами и другие операции — например, растягивание, поворот и т. д. То есть нам необходимо каждому вектору поставить в соответствие другой вектор согласно некоторому правилу. Такое отображение, согласно которому каждому элементу $x$ линейного пространства $V$ поставлен в соответствие элемент $y$ пространства $W$, называется _оператором_ из $V$ в $W$:\n",
        "\n",
        "$$\\textbf{A} :V\\rightarrow W, ~ x\\mapsto y.$$\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "N8hZsONjCGxd"
      },
      "source": [
        "Оператор $\\textbf{A}$, действующий из $V$ в $W$, называется _линейным_, если для любых элементов $x_{1}$ и $x_{2}$ пространства $V$ и любого числа $\\lambda$ выполняются равенства:\n",
        "\n",
        "$$\\textbf{A}(x_{1}+x_{2})=\\textbf{A}x_{1}+\\textbf{A}x_{2},$$\n",
        "$$\\textbf{A}(\\lambda x)=\\lambda \\textbf{A}x.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "1JA6BQt0CGxe"
      },
      "source": [
        "При этом если $W$ является подпространством пространства $V$ или совпадает с ним, тогда оператор называется _линейным преобразованием пространства $V$_. Далее, если не указано другое, под линейным оператором мы будем иметь в виду именно такое преобразование.\n",
        "\n",
        "$$\\textbf{A}:V\\rightarrow V.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "TuJNdb3tCGxg"
      },
      "source": [
        "Иначе говоря, линейное преобразование — это преобразование, переводящее вектор $x$ линейного пространства $V$ в вектор $y$ того же пространства:\n",
        "\n",
        "$$\\textbf{A}x=y.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Cl_fHtO3CGxh"
      },
      "source": [
        "При этом $y$ называется _образом_ элемента $x$, а $x$ — _прообразом_ элемента $y$."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "upv-XK7xCGxi"
      },
      "source": [
        "__Определение__\n",
        "\n",
        "Пусть $\\textbf{A}$ и $\\textbf{B}$ — два линейных оператора, действующих из $V$ в $W$.\n",
        "\n",
        "- _Суммой_ этих операторов назовем линейный оператор $\\textbf{A}+\\textbf{B}$, определяемый равенством\n",
        "\n",
        "$$(\\textbf{A}+\\textbf{B})x=\\textbf{A}x+\\textbf{B}x.$$\n",
        "\n",
        "- _Произведением_ линейного оператора $\\textbf{A}$ на скаляр $\\lambda$ назовем линейный оператор $\\lambda \\textbf{A}$, определяемый равенством\n",
        "\n",
        "$$(\\lambda \\textbf{A})x = \\lambda(\\textbf{A}x).$$\n",
        "\n",
        "- _Нулевым_ оператором назовем оператор $\\textbf{O}$, отображающий все элементы пространства $V$ в нулевой элемент пространства $W$:\n",
        "\n",
        "$$\\textbf{O}x=0.$$\n",
        "\n",
        "- _Противоположный_ оператор $-\\textbf{A}$ для любого оператора $\\textbf{A}$ определим как оператор, отвечающий соотношению\n",
        "\n",
        "$$-\\textbf{A}=(-1)\\textbf{A}.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "G6DBDbboCGxo"
      },
      "source": [
        "  __Утверждение__\n",
        "\n",
        "_Множество $L(V,W)$ всех линейных операторов, действующих из $V$ в $W$, с введенными операциями суммы и умножения на скаляр и выбранным нулевым оператором и противоположным оператором образуют линейное пространство._"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "QV3M26gjCGxq"
      },
      "source": [
        "### Свойства множества $L(V,V)$ линейных операторов"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Axz8954oCGxs"
      },
      "source": [
        "Назовем _тождественным_ (или _единичным_) оператором линейный оператор $\\textbf{I}$, действующий по правилу\n",
        "\n",
        "$$\\textbf{I}x=x.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "UIkSbTD6CGxt"
      },
      "source": [
        "Введем понятие _произведения_ линейных операторов $\\textbf{A}$ и $\\textbf{B}$ из множества $L(V,V)$ как оператор $AB$, действующий про правилу \n",
        "\n",
        "$$(\\textbf{AB})x=\\textbf{A}(\\textbf{B}x).$$\n",
        "\n",
        "При этом в общем случае $\\textbf{AB}\\neq \\textbf{BA}$."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7ZLnRCRYBVtM"
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "7ica1BFXCGxv"
      },
      "source": [
        "Для операторов из $L(V,V)$ справедливы следующие свойства:<br>\n",
        "1) $\\lambda(\\textbf{AB})=(\\lambda \\textbf{A})\\textbf{B};$<br>\n",
        "2) $(\\textbf{A}+\\textbf{B})\\textbf{C}=\\textbf{AC}+\\textbf{BC};$<br>\n",
        "3) $\\textbf{A}(\\textbf{B}+\\textbf{C})=\\textbf{AB}+\\textbf{AC};$<br>\n",
        "4) $(\\textbf{AB})\\textbf{C}=\\textbf{A}(\\textbf{BC}).$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "CQPEsq_4CGxw"
      },
      "source": [
        "__Определение__\n",
        "\n",
        "Линейный оператор $\\textbf{A}$ действует _взаимно однозначно_ из $V$ в $V$, если двум различным элементам $x_{1}$ и $x_{2}$ отвечают различные элементы $y_{1}=\\textbf{A}x_{1}$ и $y_{2}=\\textbf{A}x_{2}$."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "61_xfK2eCGxx"
      },
      "source": [
        "__Определение__\n",
        "\n",
        "Линейный оператор $\\textbf{B}$ из $L(V,V)$ называется _обратным_ для оператора $\\textbf{A}$ из $L(V,V)$, если $\\textbf{AB}=\\textbf{BA}=\\textbf{I}$."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "KKOz2K3hCGxz"
      },
      "source": [
        "## Ядро и образ линейного оператора"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "7AQEZykrCGx4"
      },
      "source": [
        "С любым оператором $\\textbf{A}$ связаны два подпространства — _ядро_ и _образ_ этого оператора."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "uUORXj5ECGx5"
      },
      "source": [
        "_Ядром линейного оператора_ $\\text{Ker}\\textbf{A}$ называется множество всех векторов исходного пространства, образы которых совпадают с нулевым вектором:\n",
        "\n",
        "$$\\text{Ker}\\textbf{A}=\\{x:\\textbf{A}x=0\\}.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Y9V_MgSPCGx7"
      },
      "source": [
        "__Утверждение__\n",
        "\n",
        "Условие $\\text{Ker}\\textbf{A}=0$ является необходимым и достаточным для того, чтобы оператор $\\textbf{A}$ имел обратный."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "PRajIXFvCGx-"
      },
      "source": [
        "_Образом линейного оператора_ $\\text{Im}\\textbf{A}$ называется множество всех векторов $y=\\textbf{A}x$, которые получаются в результате воздействия оператора $\\textbf{A}$ на векторы исходного пространства:\n",
        "\n",
        "$$\\text{Im}\\textbf{A}=\\{y:y=\\textbf{A}x\\}.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "U-STOEMzCGx_"
      },
      "source": [
        "__Замечание__\n",
        "\n",
        "Если $\\text{Ker}\\textbf{A}=0$, то $\\text{Im}\\textbf{A}=V$. Таким образом, последнее условие также является необходимым и достаточным для того, чтобы оператор $\\textbf{A}$ имел обратный."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "r98YlaNKCGyA"
      },
      "source": [
        "Некоторые свойства ядра и образа линейного оператора:\n",
        "\n",
        "- сумма размерностей ядра и образа линейного оператора равны размерности исходного пространства:\n",
        "\n",
        "$$\\text{dim}\\;\\text{Ker}\\textbf{A}+\\text{dim}\\;\\text{Im}\\textbf{A}=\\text{dim}V;$$\n",
        "\n",
        "- размерность образа линейного оператора $\\textbf{A}$ называется _рангом_ этого оператора."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "s67vVrh2CGyC"
      },
      "source": [
        "## Матрица линейного оператора"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "oDPsiS6wCGyD"
      },
      "source": [
        "Любая квадратная матрица размера $n\\times n$ может рассматриваться как линейный оператор, переводящий вектор $x$ $n$-мерного пространства в вектор $y$ того же пространства."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "37Ea2NFcCGyE"
      },
      "source": [
        "Покажем, что линейный оператор в $n$-мерном пространстве действительно можно задать, определив $n^{2}$ чисел."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "uar45jWlCGyR"
      },
      "source": [
        "Рассмотрим $n$-мерное пространство $V$. Как мы помним, в каждом таком пространстве имеется базис из $n$ линейно независимых векторов $\\{e_{1},e_{2},...,e_{n}\\}$, по которому можно разложить любой вектор этого пространства:\n",
        "\n",
        "$$x=\\xi_{1}e_{1}+\\xi_{2}e_{2}+...+\\xi_{n}e_{n}.$$\n",
        "\n",
        "Коэффициенты $\\xi_{i}$ будут координатами вектора $x$ в данном базисе."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ZTc8HuQvCGyT"
      },
      "source": [
        "Возьмем теперь линейный оператор $\\textbf{A}$, действующий из $V$ в $V$. Учитывая линейность оператора, получим\n",
        "\n",
        "$$Ax=\\xi_{1}\\cdot \\textbf{A}e_{1}+\\xi_{2}\\cdot \\textbf{A}e_{2}+...+\\xi_{n}\\cdot \\textbf{A}e_{n}.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "jKechcneCGyU"
      },
      "source": [
        "Произведем замену  $g_{i}=\\textbf{A}e_{i}$: \n",
        "\n",
        "$$Ax=\\xi_{1}g_{1}+\\xi_{2}g_{2}+...+\\xi_{n}g_{n}.$$\n",
        "\n",
        "То есть результатом воздействия оператора $\\textbf{A}$ на вектор $x$ будет вектор, имеющий те же координаты $(\\xi_{1},\\xi_{2},...,\\xi_{n})$, но в разложении по базису, состоящему из векторов $g_{i}$."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "31s63br5CGy_"
      },
      "source": [
        "Значит, для того, чтобы знать, куда переходит произвольный вектор $x$ при воздействии на него оператора $\\textbf{A}$, достаточно знать, куда переходят $n$ базисных векторов $e_{i}$."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "XUKmo_92CGzA"
      },
      "source": [
        "Рассмотрим теперь образы $g_{k}=\\textbf{A}e_{k}$ базисных векторов $e_{k}$. Они будут представлять собой также векторы исходного пространства $V$, а значит, каждый из них можно разложить по исходному базису $\\{e_{1},e_{2},...,e_{n}\\}$:\n",
        "\n",
        "$$g_{k}=a_{1k}\\cdot e_{1}+a_{2k}\\cdot e_{2}+...+a_{nk}\\cdot e_{n}.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BuNhAuoHCGzC"
      },
      "source": [
        "В конечном итоге получим \n",
        "\n",
        "$$\\textbf{A}x=\\sum_{i=1}^{n}\\xi_{i}\\sum_{k=1}^{n}a_{ik}e_{i}=\\sum_{i=1}^{n}\\left(\\sum_{k=1}^{n}a_{ik}\\xi_{k} \\right)e_{i}.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "jO7erJx5CGzD"
      },
      "source": [
        "Таким образом, если $y=\\textbf{A}x$, и элемент $y$ имеет координаты $g_{1},g_{2},...,g_{n}$, то \n",
        "\n",
        "$$g_{i} = \\sum_{k=1}^{n}a_{ik}\\xi_{k}.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "NG-g7B9bCGzE"
      },
      "source": [
        "Каждый из $n$ векторов $g_{k}$ будет определяться набором из $n$ чисел $a_{ik}$, которые характеризуют его разложение по известному базису $\\{e_{1},e_{2},...,e_{n}\\}$. Следовательно, пространство линейных операторов имеет размерность $n^{2}$, и совокупность векторов $g_{k}$ можно определить $n^{2}$ числами $a_{ik}$, которые можно записать в виде квадратной матрицы:\n",
        "\n",
        "$$A=(a_{ik})=\\begin{pmatrix}\n",
        "a_{11} & a_{12} & \\cdots & a_{1n}\\\\ \n",
        "a_{21} & a_{22} & \\cdots & a_{2n}\\\\ \n",
        "\\cdots & \\cdots & \\ddots & \\cdots\\\\ \n",
        "a_{n1} & a_{n2} & \\cdots & a_{nn}\n",
        "\\end{pmatrix}.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_C0Sat5NCGzF"
      },
      "source": [
        "Полученная матрица называется _матрицей линейного оператора_ $\\textbf{A}$ в базисе $\\{e_{1},e_{2},...,e_{n}\\}$. \n",
        "\n",
        "Задание такого набора $n^{2}$ чисел полностью определяет действие оператора $\\textbf{A}$ на базисные векторы. А зная действие линейного оператора на базисные векторы, мы будем знать его действие на любой произвольный вектор $n$-мерного линейного пространства $V$. "
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "UFZ7yEJ-CGzG"
      },
      "source": [
        "Из полученного определения следует, что __матрицы линейных преобразований всегда квадратные__."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "IboNXWrPCGzI"
      },
      "source": [
        "__Замечания__\n",
        "\n",
        "- Если оператор $\\textbf{A}$ нулевой, то все элементы матрицы $A$ оператора равны нулю в любом базисе, то есть $A$ — нулевая матрица.\n",
        "\n",
        "- Если оператор $\\textbf{A}$ единичный, то матрица этого оператора будет единичной в любом базисе.\n",
        "\n",
        "- Ранг линейного оператора $\\textbf{A}$ равен рангу матрицы $A$ этого оператора.\n",
        "\n",
        "- Определитель матрицы линейного оператора не зависит от выбора базиса, поэтому можно ввести понятие _определителя линейного оператора_\n",
        "$$det\\textbf{A}=detA,$$\n",
        "    где $A$ — матрица линейного оператора $A$ в любом базисе."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Ggpjf9I5CGzJ"
      },
      "source": [
        "Рассмотрим несколько примеров в двумерном пространстве."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "-JWefTnaCGzL"
      },
      "source": [
        "__Геометрический смысл__ линейного преобразования, заданного матрицей\n",
        "\n",
        "$$A=\\begin{pmatrix}\n",
        "a & b\\\\ \n",
        "c & d\n",
        "\\end{pmatrix},$$\n",
        "\n",
        "можно выразить как преобразование единичного квадрата в параллелограмм с вершинами $(0,0),~(a,b),~(a+c,b+d),~(c,d)$. При этом определитель матрицы линейного оператора иллюстрирует, во сколько раз площадь полученного параллелограмма будет превышать площадь исходного единичного квадрата."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "DY36gAGmO1Mj"
      },
      "source": [
        ""
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Ge5S3R0zCGzM"
      },
      "source": [
        "__Пример 1__"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RADKwp9fCGzN"
      },
      "source": [
        "Вначале изобразим базис из векторов $e_{1}=(1,0)$ и $e_{2}=(0,1)$ в двумерном пространстве:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "TBM32E1vCGzO"
      },
      "source": [
        "# запустите последовательно код в ячейках,чтобы отобразить иллюстрации\n",
        "import matplotlib.pyplot as plt"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3Zwft8OICGzY",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 258
        },
        "outputId": "a54810ae-9dba-4ddd-eb26-06bb1862c486"
      },
      "source": [
        "fig = plt.figure()\n",
        "ax = fig.add_subplot(1,1,1)\n",
        "\n",
        "ax.spines['left'].set_position('zero')\n",
        "ax.spines['bottom'].set_position('zero')\n",
        "\n",
        "ax.spines['right'].set_color('none')\n",
        "ax.spines['top'].set_color('none')\n",
        "\n",
        "plt.axis('scaled')\n",
        "plt.xlim(-2, 2)\n",
        "plt.ylim(-2, 2)\n",
        "\n",
        "ax.arrow(0, 0, 0, 1, head_width=0.15, head_length=0.2, length_includes_head=True, facecolor='black')\n",
        "ax.arrow(0, 0, 1, 0, head_width=0.15, head_length=0.2, length_includes_head=True, facecolor='black')\n",
        "ax.annotate(\"e1\", xy=(0.8, 0.2))\n",
        "ax.annotate(\"e2\", xy=(0.2, 0.8))\n",
        "\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "xCY7A4BhCGzi"
      },
      "source": [
        "\n",
        "Применим к нему произвольное линейное преобразование, заданное матрицей\n",
        "\n",
        "$$A=\\begin{pmatrix}\n",
        "0 & -1\\\\ \n",
        "1 & 0\n",
        "\\end{pmatrix}.$$\n",
        "\n",
        "Векторы коэффициентов разложения векторов $g_{i}$ по базису задают столбцы матрицы линейного оператора. Тогда базисные векторы преобразуются следующим образом:\n",
        "\n",
        "$$Ae_{1}=0\\cdot e_{1}+1\\cdot e_{2}=e_{2},$$\n",
        "\n",
        "$$Ae_{2}=-1\\cdot e_{1}+0\\cdot e_{2}=-e_{1}.$$\n",
        "\n",
        "Изобразим получившийся базис:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "WbJV75T8CGzk",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 258
        },
        "outputId": "e2869e4a-a95a-4232-9afd-ffcc9b01c315"
      },
      "source": [
        "fig = plt.figure()\n",
        "ax = fig.add_subplot(1,1,1)\n",
        "\n",
        "ax.spines['left'].set_position('zero')\n",
        "ax.spines['bottom'].set_position('zero')\n",
        "\n",
        "ax.spines['right'].set_color('none')\n",
        "ax.spines['top'].set_color('none')\n",
        "\n",
        "plt.axis('scaled')\n",
        "plt.xlim(-2, 2)\n",
        "plt.ylim(-2, 2)\n",
        "\n",
        "ax.arrow(0, 0, 0, 1, head_width=0.15, head_length=0.2, length_includes_head=True, facecolor='black')\n",
        "ax.arrow(0, 0, -1, 0, head_width=0.15, head_length=0.2, length_includes_head=True, facecolor='black')\n",
        "ax.annotate(\"e2\", xy=(-0.8, 0.3))\n",
        "ax.annotate(\"e1\", xy=(0.2, 0.8))\n",
        "\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPIAAADxCAYAAADx/OoKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAATGUlEQVR4nO3de0xUV5wH8O+RCSxodesDpTO0Lg4qgjCLg/JHa6sUrLrSWq1izIpRgm0xtulGa2ttaqPVNOnGKNV1tL5qK66PCvUx6yOaqFHp2Boj0AStKExRQcSqKAic/UMlPgYYHZh758z3k9zInTkz8yPyzT0zc+/5CSkliMi3ddC6ACLyHINMpAAGmUgBDDKRAhhkIgUwyEQKYJB1SAgRLoQ4JIQoFEIUCCE+cjFGCCGWCSHOCSHOCCHitaiV9MGgdQHkUj2A/5JS/i6EeAHAKSHEfill4SNjRgKIfLANAbDywb/kh3hE1iEpZbmU8vcHP98EUATA+MSwtwFslPedAPCvQogwL5dKOuFpkCW39t1KSkpkeHh46o0bN/Y9evvo0aMzjxw58vPD/eHDh/f97bff/n7y8TabTVqtVmm1WmV0dLTmvw+3Z97cwiOyjt26dQvjxo3D0qVL0blz5+d6jszMTDgcDjgcDgQHB7dxhaQXDLJO3bt3D+PGjcPkyZPx7rvvPnW/0WhEaWlp035ZWRmMxidn3+QvGGQdklJi+vTpiIqKwieffOJyTGpqKjZu3AgpJU6cOIEuXbogLIxvkf0VP7XWoWPHjuHHH3/EwIEDYbFYAADffPMNLl26BAB4//33MWrUKOzZswdmsxkhISFYt26dliWTxoSHlzF69GDyLqvVCofDoXUZ9GyEO4M4tSZSAINMpAAGmUgBDDKRAhhkIgUwyEQKYJCJFMAgEymAQSZSAINMpAAGmUgBDDKRAhhkIgUwyEQKYJCJFMAgEymAQSZSAINMpAAGWYemTZuG0NBQxMTEuLz/8OHD6NKlCywWCywWC77++msvV0h6w8X3dGjq1KmYOXMmpkyZ0uyY1157Dbt27fJiVaRnPCLr0NChQ9G1a1etyyAfwiD7qOPHjyMuLg4jR45EQUGB1uWQxji19kHx8fG4ePEiOnXqhD179uCdd95BcXGxy7E2mw02mw0AUFFR4c0yyYt4RPZBnTt3RqdOnQAAo0aNwr1791BZWely7KO9n3r06OHNMsmLGGQfdPnyZTxsLJCfn4/GxkZ069ZN46pIS5xa69CkSZNw+PBhVFZWwmQyYcGCBbh37x6A++1itm3bhpUrV8JgMCA4OBg5OTkQwq2GBKQotozxI2wZ45PYMobIXzDIRApgkIkUwCATKYBBJlIAg0ykAAaZSAEMMpECGGQiBTDIRApgkIkUwCATKYBBJlIAg0ykAAaZSAEMMpECGGQiBTDIRApgkIkUwCDrVGv9n6SUmDVrFsxmM2JjY/H77797uULSEwZZp6ZOnQq73d7s/Xv37kVxcTGKi4ths9nwwQcfeLE60hsGWada6/+Um5uLKVOmQAiBxMREVFdXo7y8vNnxFy9eZKcJhTHIPsrpdCI8PLxp32Qywel0PjXOZrPBarVi8ODBuHTpEkpKSrxYJXkLg6y4zMxMnDx5EnV1dQCAtWvXalwRtQcG2UcZjUaUlpY27ZeVlcFoNLocu3//fjQ0NAAAVq1ahcbGRq/USN7DIPuo1NRUbNy4EVJKnDhxAl26dEFYWJjLsd9//z1u3rwJALhz5w6OHj3q0WvPmzcP4eHhTY3kSHtsGaNTj/Z/6tmz51P9n6SUmDlzJux2O0JCQrBu3TpYrdannuf69esICwtDbW0tAEAIgQkTJiAnJ+e5aztx4gReeeUVREZG4tatW8/9POQWt1rGMMiKW7FiBebMmYPbt2833RYcHIyrV6+6dUTdtGkTli1bhrq6OgwZMgQrVqxAQEAAAKBTp04Mcvtj7ycCsrOzHwsxAAQEBGD79u2tPraoqAhbtmzBsWPHcPr0aQQEBOCnn35qr1LJA2yrqrCioiKXXzfdunULy5cvR3p6eouPP3jwIE6dOoWEhAQA999fh4aGtkep5CEGWWGrV69GfX29y/sKCgpQUlKC3r17N/t4KSXS09OxePHidqqQ2gqn1opqaGjAunXrmj4ge1JjY2Or3yknJSVh27ZtuHr1KgCgqqoKFy9ebPNayXMMsqKcTif++ecfBAcHIzg4uOn2R/ePHTvW4nMMGDAACxcuREpKCmJjY5GcnIzy8nLMmTMHJpMJNTU1MJlM+Oqrr9rzVyE38FNrhVVWVjZNrdesWYP58+c/dj52586dERISolV55B63PrXme2SFde/evennbt26AQB69eqlVTnUjji1JlIAg0ykAAaZSAEMMpECGGQiBTDIRApgkIkUwCATKYBBJlIAg0ykAAaZSAEMsk7Z7Xb069cPZrMZS5Yseer+9evXo0ePHrBYLLBYLFizZo0GVZJe8KIJHWpoaEBWVhb2798Pk8mEhIQEpKamYsCAAY+NmzhxIrKzszWqkvSER2Qdys/Ph9lsRkREBAIDA5GWlobc3FytyyIdY5B1yN12MNu3b0dsbCzGjx//2GL1j3rYMsbV9JzUwSD7qDFjxqCkpARnzpxBcnJyswvpZWZmwuFwYO7cuV6ukLyJQdYhd9rBdOvWDUFBQQCAjIwMnDp1yqs1kr4wyDqUkJCA4uJiXLhwAXV1dcjJyUFqaupjYx5dsicvLw9RUVHeLpN0hJ9at4Oamhq89957OH/+PAICAjBmzJhneo9qMBiQnZ2NESNGoKGhAdOmTUN0dDS+/PJLWK1WpKamYtmyZcjLy4PBYEDXrl2xfv369vuFSPe4+F47qKmpwcmTJzFs2DDU1dUhKSkJn3/+OUaOHKlZTStXrsSHH34ID/+/yfvYMsZbNm3ahMGDB8NisWDGjBkICgrCsGHDAACBgYGIj49HWVmZxlWSyhhkD7XWH6m6uhq//vorkpKSNKySVMf3yB5qqT9SfX09Jk2ahFmzZiEiIkLLMklxDLKHWuqPlJmZicjISHz88ccaVEb+hFNrDzXXH+mLL77AjRs3sHTpUo0rJH/AIHvIVX+k0tJSLFq0CIWFhYiPj+fVSdTuOLVuAxMnTsTEiRMfu41f85A38YhMpAAGmUgBDDKRAhhkIgUwyEQKYJCJFMAgEymAQSZSAINMpAAG+TlVVVVh8+bNuHPnjtalEDHIz6K+vh67d+/GyJEj8dJLLyE9PR379u3TuiwiBtkdBQUF+Oijj9C9e3dMmjQJdrsdtbW1CA4ObrfXbK1lTG1tLSZOnAiz2YwhQ4agpKSk3Woh/eNFE82oqqrCzz//jOXLl6OsrAx1dXWor6/3ymu70zLmhx9+wIsvvohz584hJycHn376KbZs2eKV+kh/uPjeE5xOJzIyMnDo0CEEBASgpqam2bFBQUGora1F//7927SGO3fuoLKysqnbxLVr1wDcX8v6odLSUnTv3h3BwcGQUuLcuXMwm80QwvVabdXV1bh8+TKvyvI9bi2+51GQo6OjZXtOL7Vw9+5d/Pnnn2hsbFTuj14Igfj4eK3LaBcVFRXo0aOH1mW0uVOnThVIKWNaHSilfO5t0KBBUkWDBg2SDodDZmRkyI4dO8oXXnhB4v7s47Gtc+fOcufOnW3++lu3bpXTp09v2t+4caPMysp6bEx0dLQsLS1t2o+IiJAVFRUtPm9ISEjbFqojqv4tAnBIN7LID7uaMWjQIKxevRrXrl3DunXr8PrrryMoKKhdP+B6yJ2WMY+Oqa+vx40bNx6bepN/YZBbERQUhHHjxuHw4cMoKSnBggUL8Morr6Bjx464e/duu7ymOy1jUlNTsWHDBgDAtm3bMHz48GbfH5MfcOew3dy2atUq780xvKi136uxsVE6HA752WefyatXr7ZLDbt375aRkZEyIiJCLly4UEop5fz582Vubq6UUso7d+7I8ePHyz59+siEhAR5/vz5Vp/z5Zdfbpda9UDVv0UAmdKNLPJTaz9itVrhcDi0LoOeDVvGEPkLBplIAR4Fefbs2ejfvz9iY2MxduxYVFdXt1Vdmtu6dSuio6PRoUMHJaajdrsdZ8+ebfaUT181bdo0hIaGIiam9a9afUlpaSmGDRsGIUShEKJACPFRS+M9CnJycjLOnj2LM2fOoG/fvi7bpviqmJgY7NixA0OHDtW6FI89POUzMjIShYWF2Lx5MwoLC7Uuq01MnToVdrtd6zLanMFgwHfffQcp5QAAiQCyhBADmhvvUZBTUlJgMNw/XTsxMVGp1qFRUVHo16+f1mW0ifz8fJjNZgQFBSEwMBBpaWnIzc3Vuqw2MXToUHTt2lXrMtpcWFhY01l4UsqbAIoAGJsb32bvkdeuXatpI29qntPpbDpvGwBMJhOcTqeGFdGzEEL0BvDvAE42N6bVq5+EEAcA9HJx17yHX10tWrQIBoMBkydPfq5CtfLmm2/i8uXLT92+aNEivP322xpURPQ4IUQnANsBfCyl/Ke5ca0GWUr5Zkv3r1+/Hrt27cLBgwd97syiAwcOaF2CV7hzyifpz71794D7If5JSrmjpbEeTa3tdju+/fZb5OXlISQkxJOnonb08JTP2traZk/5JH2RUmL69OkAUCSl/G+3HvC8W58+faTJZJJxcXEyLi5Ozpgxo91PWfOWHTt2SKPRKAMDA2VoaKhMSUnRuiSP7N69WwYFBT12yqcK0tLSZK9evaTBYJBGo1GuWbNG65LaxJEjRx5eZXcGwOkH2yjJUzSJp2j6JJ6iSeQvGGQiBTDIRApgkIkUwCATKYBBJlIAg0ykAAZZZ6qqqpCcnIzIyEgkJyfj+vXrLscFBATAYrHAYrHwLC1ikPVmyZIlSEpKQnFxMZKSkppdBCA4OBinT5/G6dOnkZeX5+UqSW8YZJ3Jzc1Feno6ACA9PR07d+7UuCLyBQyyzly5cgVhYWEAgF69euHKlSsux929exdWqxWJiYktht1ms8FqtcJqtaKioqJdaibtsRujBlq6DvpRQohmLw29ePEijEYj/vrrLwwfPhwDBw5Enz59nhqXmZmJzMxMAPfPtSY1McgaaOk66J49e6K8vBxhYWEoLy9HaGioy3EPryeOiIjAG2+8gT/++MNlkMk/cGqtM4+2gtmwYYPLlUquX7+O2tpaAEBlZSWOHTv2WO9k8j8Mss7MnTsX+/fvR2RkJA4cOIC5c+cCABwOBzIyMgAARUVFsFqtiIuLw7BhwzB37lwG2c/xemQ/wuuRfRKvRybyFwwykQIYZCIFMMhECmCQiRTAIBMpgEEmUgCDTKQABplIAQwykQIYZCIFMMhECmCQiRTAIBMpgEEmUgCDTKQABplIAQwykQIYZJ3ZunUroqOj0aFDhxaX5bHb7ejXrx/MZnOz3SjIfzDIOhMTE4MdO3Zg6NChzY5paGhAVlYW9u7di8LCQmzevBmFhYVerJL0huta60xUVFSrY/Lz82E2mxEREQEASEtLQ25uLlfS9GM8Ivsgp9OJ8PDwpn2TyQSn0+lyLFvG+AcekTXQUssYVwvSe4ItY/wDg6yBllrGuMNoNKK0tLRpv6ysrKmFDPknTq19UEJCAoqLi3HhwgXU1dUhJyeHzc79HIOsM7/88gtMJhOOHz+O0aNHY8SIEQCAv//+G6NGjQIAGAwGZGdnY8SIEYiKisKECRMQHR2tZdmkMbaM8SNsGeOT2DKGyF8wyEQKYJCJFMAgEymAQSZSAINMpAAGmUgBDDKRAhhkIgUwyEQKYJCJFMAgEymAQSZSAINMpAAGmUgBDDKRAhhkIgUwyEQKYJB1xt2WMb1798bAgQNhsVi4zC1xOVy9edgyZsaMGa2OPXToELp37+6FqkjvGGSdcadlDNGTOLX2UUIIpKSkYNCgQbDZbFqXQxrjEVkDbdEy5ujRozAajbh69SqSk5PRv39/lx0cbTZbU9DZ+0ldDLIGPG0ZA6CpRUxoaCjGjh2L/Px8l0Fm7yf/wKm1D7p9+zZu3rzZ9PO+ffsQExOjcVWkJQZZZ9xpGXPlyhW8+uqriIuLw+DBgzF69Gi89dZbWpZNGmPLGD/CljE+iS1jiPwFg0ykAAaZSAEMMpECGGQiBTDIRApgkIkUwCATKYBBJlIAg0ykAAaZSAEMMpECGGQiBTDIRApgkIkUwCATKYBBJlIAg0ykAAaZSAEMss7Mnj0b/fv3R2xsLMaOHYvq6mqX4+x2O/r16wez2YwlS5Z4uUrSGwZZZ5KTk3H27FmcOXMGffv2xeLFi58a09DQgKysLOzduxeFhYXYvHkzCgsLNaiW9IJB1pmUlBQYDPf7BiQmJqKsrOypMfn5+TCbzYiIiEBgYCDS0tKQm5vr7VJJRzxdDpfakRDiVwBbpJSbnrh9PIC3pJQZD/b/E8AQKeVMF8+RCSDzwe6/SCm5kr2C2DJGA0KIAwB6ubhrnpQy98GYeQDqAfzkyWtJKW0A2OVNcQyyBqSUb7Z0vxBiKoD/AJAkXU+ZnADCH9k3PbiN/BTfI+uMEOItAHMApEopa5oZ9huASCHEvwkhAgGkAcjzVo2kPwyy/mQDeAHAfiHEaSHE/wCAEOIlIcQeAJBS1gOYCeD/ABQB+F8pZYFWBZP2+GEXkQJ4RCZSAINMpAAGmUgBDDKRAhhkIgUwyEQKYJCJFPD/ehIJdSZPHE4AAAAASUVORK5CYII=\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "P2yDQXt6CGzs"
      },
      "source": [
        "То есть мы получили поворот базиса на $90$ градусов.\n",
        "\n",
        "На самом деле заданная нами матрица $A$ являлась __ортогональной__. Преобразования, заданные ортогональными матрицами, являются поворотом или поворотом с инверсией, и в общем случае матрица такого преобразования с поворотом на угол $\\varphi$ имеет вид\n",
        "\n",
        "$$\\begin{pmatrix}\n",
        "cos \\varphi & sin \\varphi\\\\ \n",
        "-sin \\varphi & cos \\varphi\n",
        "\\end{pmatrix} \\; \\text{или} \\; \n",
        "\\begin{pmatrix}\n",
        "cos \\varphi & -sin \\varphi\\\\ \n",
        "sin \\varphi & cos \\varphi\n",
        "\\end{pmatrix}.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "PPf8fnDXCGzt"
      },
      "source": [
        "Важные свойства ортогональных преобразований:\n",
        "\n",
        "- ортогональные преобразования сохраняют скалярное произведение\n",
        "\n",
        "$$\\left \\langle Ax,Az \\right \\rangle = \\left \\langle x,z \\right \\rangle;$$\n",
        "\n",
        "- ортогональные преобразования сохраняют длины векторов\n",
        "\n",
        "$$\\left \\| Ax \\right \\| = \\left \\| x \\right \\|;$$\n",
        "\n",
        "- ортогональные преобразования сохраняют углы между векторами;\n",
        "\n",
        "- ортогональные преобразования — это изометрии, т. е. они сохраняют расстояние между элементами в метрическом пространстве."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "lW8q4HenCGzu"
      },
      "source": [
        "Определитель матрицы линейного оператора иллюстрирует, во сколько раз увеличится площадь единичного квадрата после применения этого оператора. Для ортогональных матриц он всегда составляет\n",
        "\n",
        "$$detA=\\pm1.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GumPsolWCGzw"
      },
      "source": [
        "__Пример 2__"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "u-Q5mcXfCGzx"
      },
      "source": [
        "Преобразование, заданное невырожденной __диагональной__ матрицей, представляет собой растяжение или сжатие относительно координатных осей.\n",
        "\n",
        "Рассмотрим те же базисные векторы $e_{1}$ и $e_{2}$ и действие на них линейного оператора, заданного матрицей\n",
        "\n",
        "$$\\begin{pmatrix} 1 & 0\\\\  0 & 2 \\end{pmatrix}.$$\n",
        "\n",
        "$$Ae_{1}=1\\cdot e_{1}+0\\cdot e_{2}=e_{1},$$\n",
        "\n",
        "$$Ae_{2}=0\\cdot e_{1}+2\\cdot e_{2}=2e_{2}.$$\n",
        "\n",
        "Изобразим получившийся базис:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "75Ja58HoCGzz",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 258
        },
        "outputId": "1cee77fd-6972-4602-e706-10c8678498d8"
      },
      "source": [
        "fig = plt.figure()\n",
        "ax = fig.add_subplot(1,1,1)\n",
        "\n",
        "ax.spines['left'].set_position('zero')\n",
        "ax.spines['bottom'].set_position('zero')\n",
        "\n",
        "ax.spines['right'].set_color('none')\n",
        "ax.spines['top'].set_color('none')\n",
        "\n",
        "plt.axis('scaled')\n",
        "plt.xlim(-2, 2)\n",
        "plt.ylim(-2, 2)\n",
        "\n",
        "ax.arrow(0, 0, 0, 2, head_width=0.15, head_length=0.2, length_includes_head=True, facecolor='black')\n",
        "ax.arrow(0, 0, 1, 0, head_width=0.15, head_length=0.2, length_includes_head=True, facecolor='black')\n",
        "ax.annotate(\"e1\", xy=(0.8, 0.3))\n",
        "ax.annotate(\"e2\", xy=(0.2, 1.8))\n",
        "\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8UUwhT98CG0D"
      },
      "source": [
        "__Пример 3__"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RM1-Jv7lCG0F"
      },
      "source": [
        "Рассмотрим еще один класс матриц — __симметричные__.\n",
        "\n",
        "Особенность таких матриц в том, что их можно представить в виде произведения ортогональной матрицы, диагональной и еще одной ортогональной:\n",
        "\n",
        "$$A=QDQ^{T},$$\n",
        "\n",
        "где $Q$ —  некоторая ортогональная матрица, а $D$ — диагональная матрица.\n",
        "\n",
        "В контексте линейных преобразований это означает, что сложное преобразование, заданное такой матрицей, можно представить в виде комбинации поворотов и растяжений вдоль осей, задаваемых диагональным и ортогональными компонентами ее разложения."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "XnKYsMhXCG0H"
      },
      "source": [
        "Столбцы ортогональной матрицы $Q$ из этого разложения содержат ортонормированный базис из _собственных векторов_, а диагональная матрица $D$ содержит _собственные значения_ исходной матрицы на главной диагонали. Со значением этих терминов мы познакомимся позже в данном уроке."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "3PB8SbLdCG0J"
      },
      "source": [
        "## Характеристический многочлен линейного оператора"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RyV-JoQgCG0L"
      },
      "source": [
        "__Определение__\n",
        "\n",
        "Многочлен относительно $\\lambda$ \n",
        "\n",
        "$$det(\\textbf{A}-\\lambda\\textbf{I}),$$\n",
        "\n",
        "где $\\textbf{A}$ — линейный оператор, $\\textbf{I}$ — единичный оператор из $L(V,V)$, называется _характеристическим многочленом_ оператора $\\textbf{A}$."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "z2T1Sw9WCG0P"
      },
      "source": [
        "Пусть в пространстве $V$ задан базис $e_{k}$ и $A=(a_{ik})$ — матрица оператора $\\textbf{A}$ в этом базисе. Тогда\n",
        "\n",
        "$$det(\\textbf{A}-\\lambda\\textbf{I})=\\begin{vmatrix}\n",
        "a_{11}-\\lambda & a_{12} & \\cdots & a_{1n}\\\\ \n",
        "a_{21} & a_{22}-\\lambda & \\cdots & a_{2n}\\\\  \n",
        "\\cdots & \\cdots & \\ddots & \\cdots \\\\ \n",
        "a_{n1} & a_{n2} & \\cdots & a_{nn}-\\lambda\\\\ \n",
        "\\end{vmatrix}.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "42Ig8sAcCG0Y"
      },
      "source": [
        "__Пример__\n",
        "\n",
        "Для $n=2$\n",
        "\n",
        "$$det(\\textbf{A}-\\lambda\\textbf{I})=\\begin{vmatrix}\n",
        "a_{11}-\\lambda & a_{12}\\\\ \n",
        "a_{21} & a_{22}-\\lambda\n",
        "\\end{vmatrix} = \\lambda^{2}-(a_{11}+a_{22})\\lambda+(a_{11}a_{22}-a_{12}a_{21}).$$\n",
        "\n",
        "Для $n=3$\n",
        "\n",
        "$$det(\\textbf{A}-\\lambda\\textbf{I})=\\begin{vmatrix}\n",
        "a_{11}-\\lambda & a_{12} & a_{13}\\\\ \n",
        "a_{21} & a_{22}-\\lambda & a_{23}\\\\  \n",
        "a_{31} & a_{32} & a_{33}-\\lambda\\\\ \n",
        "\\end{vmatrix} = -\\lambda^{3} + (a_{11}+a_{22}+a_{33})\\lambda^{2}-\\left\\{\\begin{vmatrix}\n",
        "a_{11} & a_{12}\\\\ \n",
        "a_{21} & a_{22}\n",
        "\\end{vmatrix} + \\begin{vmatrix}\n",
        "a_{22} & a_{23}\\\\ \n",
        "a_{32} & a_{33}\n",
        "\\end{vmatrix} + \\begin{vmatrix}\n",
        "a_{11} & a_{13}\\\\ \n",
        "a_{31} & a_{33}\n",
        "\\end{vmatrix}\\right\\}\\lambda + detA.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "jeLhQ0W9CG0Z"
      },
      "source": [
        "Запишем в общем случае характеристический многочлен, обозначив через $d_{k}$ коэффициент при $\\lambda^{k}$:\n",
        "\n",
        "$$det(\\textbf{A}-\\lambda\\textbf{I})=d_{0}+d_{1}\\lambda+...+d_{n-1}\\lambda^{n-1}+(-1)^{n}\\lambda^{n},$$\n",
        "\n",
        "или\n",
        "\n",
        "$$det(\\textbf{A}-\\lambda\\textbf{I})=\\sum_{k=0}^{n}d_{k}\\lambda^{k}.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "sRSEpb9bCG0b"
      },
      "source": [
        "Уравнение \n",
        "$$det(\\textbf{A}-\\lambda\\textbf{I})=0$$\n",
        "\n",
        "называется _характеристическим уравнением_ оператора $\\textbf{A}$."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "WxqftEsUCG0d"
      },
      "source": [
        "## Собственные векторы и собственные значения операторов"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "cmioQS-DnJvz"
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "itJDO_0FCG0e"
      },
      "source": [
        "_Собственный вектор_ оператора $\\textbf{A}$ — это такой ненулевой вектор, действие оператора на который сводится к умножению его на число:\n",
        "\n",
        "$$\\textbf{A}x=\\lambda x.$$\n",
        "\n",
        "При этом число $\\lambda$ называется _собственным значением_ этого оператора."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "LXVcg4LJCG0h"
      },
      "source": [
        "Упрощенно говоря, действие оператора $\\textbf{A}$ на собственный вектор $x$ заключается в растяжении или сжатии последнего без изменения его направления. Собственные векторы характеризуют направления, в которых оператор растягивает или сжимает векторы без их поворота. То есть геометрический смысл собственных векторов заключается в том, что если ненулевой вектор $x$ является собственным для преобразования $\\textbf{A}$, то его образ $\\textbf{A}x$ коллинеарен прообразу $x$."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "rwcyUEpiCG0j"
      },
      "source": [
        "В контексте машинного обучения понятие собственных векторов полезно для охарактеризования наиболее типичных направлений преобразования матрицы. Они применяются для уменьшения матрицы с максимальным сохранением информации в ней (метод опорных векторов)."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "r4enE5nLCG0n"
      },
      "source": [
        "__Теорема__\n",
        "\n",
        "Для того чтобы число $\\lambda$ было собственным значением оператора $\\textbf{A}$, необходимо и достаточно, чтобы это число было корнем характеристического уравнения оператора $\\textbf{A}$."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "-EKkD0swCG0o"
      },
      "source": [
        "__Пример__\n",
        "\n",
        "Изобразим на плоскости базис из векторов $e_{1}=(1,0)$ и $e_{2}=(0,1)$ в двумерном пространстве:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tWZ6MSaNCG0s",
        "outputId": "d4076baf-9fcb-4470-83d7-33f9b58a842e"
      },
      "source": [
        "fig = plt.figure()\n",
        "ax = fig.add_subplot(1,1,1)\n",
        "0\n",
        "ax.spines['left'].set_position('zero')\n",
        "ax.spines['bottom'].set_position('zero')\n",
        "\n",
        "ax.spines['right'].set_color('none')\n",
        "ax.spines['top'].set_color('none')\n",
        "\n",
        "plt.axis('scaled')\n",
        "plt.xlim(-2, 2)\n",
        "plt.ylim(-2, 2)\n",
        "\n",
        "ax.arrow(0, 0, 0, 1, head_width=0.15, head_length=0.2, length_includes_head=True, facecolor='black')\n",
        "ax.arrow(0, 0, 1, 0, head_width=0.15, head_length=0.2, length_includes_head=True, facecolor='black')\n",
        "ax.annotate(\"e1\", xy=(0.8, 0.3))\n",
        "ax.annotate(\"e2\", xy=(0.2, 0.8))\n",
        "\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPIAAADxCAYAAADx/OoKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAE4NJREFUeJzt3X1QVPW/B/D3Vza8MKY/RVFgScNFQBD26qo0o06KQOKN8mEUx0kcH7CUMfOOxmQ11WjaH7/GlOS2kU9ZYj4FmXJDyxlzNMRySKAZnESB8AGfxQcQvvcPZK/I8qDAnrPffb9mzsTZ893jZ8O35+zuOd+PkFKCiJxbF60LIKL2Y5CJFMAgEymAQSZSAINMpAAGmUgBDLIOCSH8hRC/CCGKhBAFQog37YwRQoh1QogzQoh8IcRQLWolfTBoXQDZ9QDAf0spfxdCPAvgpBAiR0pZ+MiYCQACHy4jAaQ9/C+5IB6RdUhKWSGl/P3hz7cAFAHwe2zYKwC2ynrHAfxLCOHj4FJJJ9obZMmlc5eSkhLp7+8ff+PGjZ8efXzixIlJR44c+bZhfdy4cYNOnDjxz+PPt1qt0mKxSIvFIkNDQzV/PVyeeGkTHpF17Pbt25gyZQrWrl2L7t27N9pm79JaIUSTx5KSkpCXl4e8vDx4eHh0Wq2kLQZZp2pqajBlyhTMnDkTkydPbrLdaDSitLTUtl5WVgZfX19Hlkg6wiDrkJQSc+fORUhICJYuXWp3THx8PLZu3QopJY4fP44ePXrAx4dvkV0VP7XWoaNHj+Lrr7/GkCFDYDabAQAff/wxzp8/DwB4/fXXERcXh/3798NkMsHT0xObNm3SsmTSmGjnbYztejI5lsViQV5entZl0JNp+sGHHTy1JlIAg0ykAAaZSAEMMpECGGQiBTDIRApgkIkUwCATKYBBJlIAg0ykAAaZSAEMMpECGGQiBTDIRApgkIkUwCATKYBBJlIAg0ykAAZZh+bMmQNvb2+EhYXZ3X748GH06NEDZrMZZrMZH330kYMrJL3h5Hs6NHv2bCQnJ2PWrFnNjhk9ejT27dvnwKpIz3hE1qExY8agV69eWpdBToRBdlLHjh1DREQEJkyYgIKCAq3LIY3x1NoJDR06FOfOnUO3bt2wf/9+vPrqqyguLrY71mq1wmq1AgAuX77syDLJgXhEdkLdu3dHt27dAABxcXGoqalBZWWl3bGP9n7q06ePI8skB2KQndCFCxdsTdxyc3NRV1cHLy8vjasiLfHUWodmzJiBw4cPo7KyEkajER9++CFqamoA1LeL2bVrF9LS0mAwGODh4YGMjAy7nRjJdbBljAthyxinxJYxRK6CQSZSAINMpAAGmUgBDDKRAhhkIgUwyEQKYJCJFMAgEymAQSZSAINMpAAGmUgBDDKRAhhkIgUwyEQKYJCJFMAgEymAQSZSAINMpAAGWada6/8kpcTixYthMpkQHh6O33//3cEVkp4wyDo1e/ZsZGdnN7v9wIEDKC4uRnFxMaxWK9544w0HVkd6wyDrVGv9nzIzMzFr1iwIIRAZGYnr16+joqKi2fHnzp1jpwmFMchOqry8HP7+/rZ1o9GI8vLyJuOsVissFgtGjBiB8+fPo6SkxIFVkqMwyE7K3nzk9iapT0pKwm+//Ybq6moAwMaNGzu9NnI8BtlJGY1GlJaW2tbLysrg6+trd2xOTg5qa2sBAF988QXq6uocUiM5DoPspOLj47F161ZIKXH8+HH06NEDPj4+dsd+/vnnuHXrFgDg7t27+PXXX5/6z71z5w4mTpyI4OBghIaGIiUl5an3RR1IStmehTpJQkKC7NevnzQYDNLPz0+mp6fLtLQ0mZaWJqWUsq6uTi5cuFAGBATIsLAweeLECbv7uXr1quzatatEfXsfKYSQ06dPf+q6qqqq5M8//yyllPL+/fty1KhRcv/+/U+9P2pVm7LI3k+K27BhA5YvX46qqirbYx4eHrh06ZKtNWtLtm3bhnXr1qG6uhojR47Ehg0b4ObmZtv+5ptvIiwsDPPnz++U+om9nwhAampqoxADgJubG3bv3t3qc4uKirBjxw4cPXoUp06dgpubG7755hvb9uvXr+OHH35AVFRUh9dNT4ZtVRVWVFRk9+um27dvY/369UhMTGzx+YcOHcLJkycxfPhwAPXvr729vQEADx48wIwZM7B48WIEBAR0eO30ZBhkhX355Zd48OCB3W0FBQUoKSnBgAEDmn2+lBKJiYlYvXp1k21JSUkIDAzEkiVLOqpcageeWiuqtrYWmzZtsjVIf1xdXV2r3ylHRUVh165duHTpEgDg6tWrOHfuHN59913cuHEDa9eu7fC66enwwy5FnT9/Hs8//zy6du0KoP60GKj/oAuoD/qoUaNw6NChFvezY8cOrF69GnV1dXjmmWfw2WefYfTo0QgODrbtOzk5GfPmzevEV+PS2vRhF4OssMrKStupdXp6Ot57771G12N3794dnp6eWpVHbdOmIPM9ssJ69+5t+9nLywsA0K9fP63KoU7E98hECmCQiRTAIBMpgEEmUgCDTKQABplIAQwykQIYZCIFMMhECmCQiRTAIBMpgEHWqezsbAQFBcFkMmHNmjVNtm/evBl9+vSB2WyG2WxGenq6BlWSXvCmCR2qra3FokWLkJOTA6PRiOHDhyM+Ph6DBw9uNG769OlITU3VqErSEx6RdSg3NxcmkwkBAQFwd3dHQkICMjMztS6LdIxB1qG2toPZvXs3wsPDMXXq1EaT1T+qoWWMvdNzUgeDrEP2Jnt4vB3Myy+/jJKSEuTn52P8+PHNTqSXlJSEvLw8TiSvOAZZh9rSDsbLy8s21c78+fNx8uRJh9ZI+sIg69Dw4cNRXFyMs2fPorq6GhkZGYiPj2805tEpe7KyshASEuLoMklHGGQdMhgMSE1NRWxsLEJCQjBt2jSEhobi/fffR1ZWFgBg3bp1CA0NRUREBNatW4fNmzdrW7QDrVixAv7+/m3qlOEqOPmei0hLS8PChQvtvv92NsePH0f//v0RGBiI27dva11OZ2PLGHJ+27Ztw4gRI2A2m7FgwQLU1tYiMjKy2c6TropBJt1qrfcU/T9e2UW61VLvKWqMQSbdaqn3FDXGU2vSreZ6T1FTDDLp1uDBg7Fy5UrExMQgPDwc0dHRqKiowPLly2E0GnHnzh0YjUZ88MEHWpeqOX795CJU+vrJxfDrJyJXwSATKYBBJlIAg0ykAAaZSAEMMpECGGQiBTDIRApgkIkUwCCTLuXn5+PQoUOoq6vTuhSnwCCTLi1YsABxcXHw9vZGSkoKzpw5o3VJusYg61RrLWPu37+P6dOnw2QyYeTIkSgpKXF8kZ1ISonq6mpcuXIFn376KYYMGYKIiAikp6fj5s2bWpenOwyyDjW0jDlw4AAKCwuxfft2FBYWNhrz1VdfoWfPnjhz5gzeeustvP322xpV2/lqampw79495OfnY8mSJejbty8mT57MU+9HcGIBHXq0ZQwAW8uYR3s/ZWZm2m7fmzp1KpKTkyGlbDKRfYOGu56cZdrcv/76y+7jVVVVAIC9e/fi4MGDcHd3x9KlS/HOO+84sjzdaddtjKGhodLDw6MDy9GHy5cvo0+fPpr9+deuXcPNmzfRv39/AMCVK1dQVVWF5557zjamoKAAgYGBcHd3BwD8+eefCAkJgcHQ+N/my5cvo7KyElJK3L1713EvwgG6dOkCKSV69uyJbt26afo76ywnT54skFKGtTpQSvnUy7Bhw6SKtH5d3333nZw7d65tfevWrTI5ObnRmMGDB8vS0lLbekBAgKysrGxxv56enh1baCcaOXKkRP397o0Wg8EgPT09ZVBQkFy/fr3tNWv9O+ssAPJkG7LIU2sdakvLmIYxRqMRDx48wI0bN9CrVy9Hl+owzz77LIQQSExMRFJSEsLCWj9IuRIGWYcebRnj5+eHjIwMfPvtt43GxMfHY8uWLXjhhRewa9cujBs3rtn3x87K3d0dQgiMHTsWycnJiI2NbfLWgeq16/9KUlJSR9WhK1q/rkdbxtTW1mLOnDm2ljEWiwXx8fGYO3cuXnvtNZhMJvTq1QsZGRmt7rd3794OqL5jpKSkoKysDDNmzICXl1er47X+nXUia1sGcc4uF2KxWJCXl6d1GfRkOGcXkatgkIkU0K4gL1u2DMHBwQgPD8ekSZNw/fr1jqpLczt37kRoaCi6dOmixOlodnY2Tp8+3ewln85qzpw58Pb2Vu5T7NLSUowdOxZCiCIhRIEQ4s2WxrcryNHR0Th9+jTy8/MxaNAgpVp7hIWFYc+ePRgzZozWpbRbwyWfgYGBzV7y6axmz56N7OxsrcvocAaDAf/+978hpQwBEAlgkRBicHPj2xXkmJgY29cBkZGRKCsra8/udCUkJARBQUFal9EhGi757Nq1K9zd3W2XfKpgzJgxSn5/7uPjg6FDhwIApJS3ABQB8GtufIe9R964cSMmTJjQUbujDlReXg5/f3/butFoRHl5uYYV0ZMQQgwA8J8AfmtuTKvfIwshDgLoZ2fTioavrlatWgWDwYCZM2c+VaFaGT9+PC5cuNDk8VWrVuGVV17RoKLOYe8rRtUuHlGVEKIbgN0Alkgpm71/s9UgSynHt7R9y5Yt2LdvHw4dOuR0fzkOHjyodQkO0ZZLPkl/ampqgPoQfyOl3NPS2HadWmdnZ+OTTz5BVlYWPD0927Mr6kQNl3zev38f1dXVyMjIQHx8vNZlUQuklJg7dy4AFEkpP23TE552GThwoDQajTIiIkJGRETIBQsWdPbNIA6zZ88e6efnJ93d3aW3t7eMiYnRuqR2+fHHH2XXrl1lQECAXLlypdbldJiEhATZr18/aTAYpJ+fn0xPT9e6pA5x5MiRhju+8gGcerjEyWayyEs0XQgv0XRKvESTyFUwyEQKYJCJFMAgEymAQSZSAINMpAAGmUgBDLLOXL16FdHR0QgMDER0dDSuXbtmd5ybmxvMZjPMZjOv0iIGWW/WrFmDqKgoFBcXIyoqqtlJADw8PHDq1CmcOnUKWVlZDq6S9IZB1pnMzEwkJiYCABITE/H9999rXBE5AwZZZy5evAgfHx8A9TeXX7p0ye64e/fuwWKxIDIyssWwW61WWCwWWCwWXL58uVNqJu1xtm8NtHQfdFudP38evr6++PvvvzFu3DgMGTIEAwcObDIuKSnJNuezxWJ5+qJJ1xhkDbR0H3Tfvn1RUVEBHx8fVFRUwNvb2+64hvuJAwIC8OKLL+KPP/6wG2RyDTy11pmGVjBA/aQN9mYquXbtGu7fvw8AqKysxNGjRxu1XCXXwyDrTEpKCnJychAYGIicnBykpKQAAPLy8jBv3jwAQFFRESwWCyIiIjB27FikpKQwyC6O9yO7EN6P7JR4PzKRq2CQiRTAIBMpgEEmUgCDTKQABplIAQwykQIYZCIFMMhECmCQiRTAIBMpgEEmUgCDTKQABplIAQwykQIYZCIFMMhECmCQiRTAIOvMzp07ERoaii5durQ4LU92djaCgoJgMpma7UZBroNB1pmwsDDs2bMHY8aMaXZMbW0tFi1ahAMHDqCwsBDbt29HYWGhA6skveG81joTEhLS6pjc3FyYTCYEBAQAABISEpCZmcmZNF0Yj8hOqLy8HP7+/rZ1o9GI8vJyu2PZMsY18IisgZZaxtibkP5x9qYwFsL+rKlsGeMaGGQNtNQypi2MRiNKS0tt62VlZbYWMuSaeGrthIYPH47i4mKcPXsW1dXVyMjIYLNzF8cg68zevXthNBpx7NgxTJw4EbGxsQCAf/75B3FxcQAAg8GA1NRUxMbGIiQkBNOmTUNoaKiWZZPG2DLGhbBljFNiyxgiV8EgEymAQSZSAINMpAAGmUgBDDKRAhhkIgUwyEQKYJCJFMAgEymAQSZSAINMpAAGmUgBDDKRAhhkIgUwyEQKYJCJFMAgEymAQdaZtraMGTBgAIYMGQKz2cxpbonT4epNQ8uYBQsWtDr2l19+Qe/evR1QFekdg6wzbWkZQ/Q4nlo7KSEEYmJiMGzYMFitVq3LIY3xiKyB9raMAYCjR4/C19cXly5dQnR0NIKDg+12cLRarbags/eTuhhkDbS3ZQwAW4sYb29vTJo0Cbm5uXaDzN5ProGn1k6oqqoKt27dsv38008/ISwsTOOqSEsMss60pWXMxYsXMWrUKERERGDEiBGYOHEiXnrpJS3LJo2xZYwLYcsYp8SWMUSugkEmUgCDTKQABplIAQwykQIYZCIFMMhECmCQiRTAIBMpgEEmUgCDTKQABplIAQwykQIYZCIFMMhECmCQiRTAIBMpgEEmUgCDTKQABllnli1bhuDgYISHh2PSpEm4fv263XHZ2dkICgqCyWTCmjVrHFwl6Q2DrDPR0dE4ffo08vPzMWjQIKxevbrJmNraWixatAgHDhxAYWEhtm/fjsLCQg2qJb1gkHUmJiYGBkN934DIyEiUlZU1GZObmwuTyYSAgAC4u7sjISEBmZmZji6VdKS90+FSJxJC/ABgh5Ry22OPTwXwkpRy3sP11wCMlFIm29lHEoCkh6v/IaXkTPYKYssYDQghDgLoZ2fTCill5sMxKwA8APCNvV3Yeczuv8hSSisAdnlTHIOsASnl+Ja2CyESAfwXgChp/5SpDID/I+tGAP90XIXkbPgeWWeEEC8BeBtAvJTyTjPDTgAIFEI8L4RwB5AAIMtRNZL+MMj6kwrgWQA5QohTQoj/AQAhhK8QYj8ASCkfAEgG8L8AigB8J6Us0Kpg0h4/7CJSAI/IRApgkIkUwCATKYBBJlIAg0ykAAaZSAEMMpEC/g9BwwDvrGSE3QAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "5RttFuOJCG02"
      },
      "source": [
        "Применим к нему линейное преобразование, заданное матрицей\n",
        "\n",
        "$$A=\\begin{pmatrix}\n",
        "1 & 1\\\\ \n",
        "0 & 1\n",
        "\\end{pmatrix}.$$\n",
        "\n",
        "И найдем его собственные векторы и собственные значения.\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "fMstZvCoCG05"
      },
      "source": [
        "Как говорилось ранее, векторы коэффициентов разложения векторов $g_{i}$ по базису задают столбцы матрицы линейного оператора. Тогда базисные векторы преобразуются следующим образом:\n",
        "\n",
        "$$Ae_{1}=1\\cdot e_{1}+0\\cdot e_{2}=e_{1},$$\n",
        "\n",
        "$$Ae_{2}=e_{1}+e_{2}.$$"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NaZBRx9ACG06",
        "outputId": "d8ea73c7-2613-4ced-911e-2afcbb2bc0ac"
      },
      "source": [
        "fi0g = plt.figure()\n",
        "    ax = fig.add_subplot(1,1,1)\n",
        "\n",
        "ax.spines['left'].set_position('zero')\n",
        "ax.spines['bottom'].set_position('zero')\n",
        "\n",
        "ax.spines['right'].set_color('none')\n",
        "ax.spines['top'].set_color('none')\n",
        "\n",
        "plt.axis('scaled')\n",
        "plt.xlim(-2, 2)\n",
        "plt.ylim(-2, 2)\n",
        "\n",
        "ax.arrow(0, 0, 1, 1, head_width=0.15, head_length=0.2, length_includes_head=True, facecolor='black')\n",
        "ax.arrow(0, 0, 1, 0, head_width=0.15, head_length=0.2, length_includes_head=True, facecolor='black')\n",
        "ax.annotate(\"e1\", xy=(0.8, 0.3))\n",
        "ax.annotate(\"e2\", xy=(0.6, 1.0))\n",
        "\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "rRaN3YpCCG1A"
      },
      "source": [
        "Теперь найдем собственные значения линейного оператора, составив и решив характеристическое уравнение:\n",
        "\n",
        "$$\\begin{vmatrix}\n",
        "1-\\lambda & 1\\\\ \n",
        "0 & 1-\\lambda\n",
        "\\end{vmatrix} = 0,$$\n",
        "\n",
        "$$(1-\\lambda)(1-\\lambda)-0\\cdot1=0,$$\n",
        "\n",
        "$$(1-\\lambda)^{2}=0,$$\n",
        "\n",
        "$$\\lambda=1.$$"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "iGe8M8ZTxCop"
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "AU_jIiJLCG1B"
      },
      "source": [
        "Теперь найдем собственные векторы вида $\\begin{pmatrix}\n",
        "x_{1}\\\\ \n",
        "x_{2}\n",
        "\\end{pmatrix}$, подставив полученное собственное значение в выражение $\\textbf{A}x=\\lambda x$:\n",
        "\n",
        "$$\\begin{pmatrix}\n",
        "1 & 1\\\\ \n",
        "0 & 1\n",
        "\\end{pmatrix}\n",
        "\\begin{pmatrix}\n",
        "x_{1}\\\\ \n",
        "x_{2}\n",
        "\\end{pmatrix}=\n",
        "\\lambda\n",
        "\\begin{pmatrix}\n",
        "x_{1}\\\\ \n",
        "x_{2}\n",
        "\\end{pmatrix}.\n",
        "$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_8uW26YXCG1D"
      },
      "source": [
        "Получим\n",
        "\n",
        "$$\\begin{cases}\n",
        "x_{1}+x_{2}= x_{1}, \\\\\n",
        "0\\cdot x_{1}+x_{2}= x_{2}.\n",
        "\\end{cases}$$ \n",
        "\n",
        "Перенеся все в левую часть, получим\n",
        "\n",
        "$$\\begin{cases}\n",
        "x_{1}+x_{2} - x_{1} = 0, \\\\\n",
        "0\\cdot x_{1}+x_{2} - x_{2} = 0;\n",
        "\\end{cases}$$ \n",
        "\n",
        "$$\\begin{cases}\n",
        "x_{1}=-2x_{2}, \\\\\n",
        "x_{2} = x_{2}.\n",
        "\\end{cases}$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "4IZ2mWTMCG1F"
      },
      "source": [
        "Вторая координата $x_{2}=0$, а за первую можно принять любое ненулевое значение, например $x_{1}=1$. Проверка подстановки таких значений в систему покажет, что вектор вида $x=\\begin{pmatrix}\n",
        "1\\\\ \n",
        "0\n",
        "\\end{pmatrix}$ удовлетворяет каждому уравнению системы."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "gtHYbkVhCG1K"
      },
      "source": [
        "Таким образом, существует лишь одно множество коллинеарных друг другу собственных векторов, представителем которых является $x=(1,0)$ (с точностью до умножения на число), которые это линейное преобразование переводит в коллинеарные исходным, причем той же длины, так как $\\lambda=1$, что мы и увидели на иллюстрациях векторов $e_{1}$ и $e_{2}$ до и после применения линейного преобразования, когда $e_{1} = (1,0)$ не изменил своего направления и длины."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "n-RbdXjKCG1M"
      },
      "source": [
        "При решении подобных задач в случае получения нескольких различных собственных значений $\\lambda_{i}$ необходимо каждое из них поочередно подставлять в выражение $\\textbf{A}x=\\lambda x$ и находить собственные векторы, соответствующие данному собственному значению."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Rqc51_XqCG1N"
      },
      "source": [
        "__Утверждение__\n",
        "\n",
        "У матрицы размера $n\\times n$ ровно $n$ собственных значений."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "r5OMbpmyCG1Q"
      },
      "source": [
        "В предыдущем примере в действительности решение квадратного уравнения приводило к получению двух равных корней $\\lambda_{1}=\\lambda_{2}=1$."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "veUkSAZ5CG1R"
      },
      "source": [
        "Причем собственные значения не всегда должны быть вещественными. Рассмотрим пример с оператором поворота."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ESqLPAc8CG1S"
      },
      "source": [
        "__Пример__\n",
        "\n",
        "Оператор поворота, как мы помним, задается ортогональной матрицей. Возьмем, к примеру, матрицу вида\n",
        "\n",
        "$$\\begin{pmatrix}\n",
        "cos \\varphi & -sin \\varphi\\\\ \n",
        "sin \\varphi & cos \\varphi\n",
        "\\end{pmatrix},$$\n",
        "\n",
        "производящую поворот на угол $30^{\\circ}$:\n",
        "\n",
        "$$\\begin{pmatrix}\n",
        "\\frac{\\sqrt{3}}{2} & -\\frac{1}{2}\\\\ \n",
        "\\frac{1}{2} & \\frac{\\sqrt{3}}{2}\n",
        "\\end{pmatrix}.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "AqpP9TnACG1W"
      },
      "source": [
        "Составим характеристическое уравнение:\n",
        "\n",
        "$$\\begin{vmatrix}\n",
        "\\frac{\\sqrt{3}}{2}-\\lambda & -\\frac{1}{2}\\\\ \n",
        "\\frac{1}{2} & \\frac{\\sqrt{3}}{2}-\\lambda\n",
        "\\end{vmatrix}=0,$$\n",
        "\n",
        "$$\\left(\\frac{\\sqrt{3}}{2}-\\lambda \\right)^{2} + \\frac{1}{4}=0.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "kd7_o5j4CG1Z"
      },
      "source": [
        "Оно будет иметь комплексные корни $$\\lambda = \\frac{\\sqrt{3}}{2}\\pm\\frac{i}{2}.$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "XacGpxyfCG1a"
      },
      "source": [
        "У такого преобразования нет действительных собственных векторов, что очевидно в геометрическом смысле: ни один ненулевой вектор после поворота на 30 градусов не отобразится в коллинеарный исходному."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "q2oAiDNJCG1b"
      },
      "source": [
        "В NumPy собственные векторы и собственные значения оператора вычисляются с помощью функции `numpy.linalg.eig(a)`, где `a` — матрица этого оператора. В качестве результата она выдает два массива: одномерный массив `w` собственных чисел и двумерный массив `v`, в котором по столбцам записаны собственные векторы, так что вектор `v[:, i]` соответствует собственному значению `w[i]`."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "YUyxl7VXCG1c"
      },
      "source": [
        "import numpy as np\n",
        "\n",
        "np.set_printoptions(precision=2, suppress=True)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "AJo34s7fCG1h",
        "outputId": "0f6152c1-6b34-4eca-8ada-769688db3548"
      },
      "source": [
        "a = np.array([[1, 1], [0, 1]])\n",
        "w, v = np.linalg.eig(a)\n",
        " \n",
        "print(f'Матрица A:\\n{a}')\n",
        "print(f'Собственные значения:\\n{w}')\n",
        "print(f'Собственные векторы:\\n{v}')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Матрица A:\n",
            "[[1 1]\n",
            " [0 1]]\n",
            "Собственные значения:\n",
            "[1. 1.]\n",
            "Собственные векторы:\n",
            "[[ 1. -1.]\n",
            " [ 0.  0.]]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "lbcyRsTvWklX"
      },
      "source": [
        "import math\n",
        "a = np.array([[math.sqrt(3)/2, -1/2], [1/2, math.sqrt(3)/2]])\n",
        "w, v = np.linalg.eig(a)\n",
        "print(f'Матрица A:\\n{a}')\n",
        "print(f'Собственные значения:\\n{w}')\n",
        "print(f'Собственные векторы:\\n{v}')\n",
        "\n",
        "Матрица A:\n",
        "[[ 0.87 -0.5 ]\n",
        " [ 0.5   0.87]]\n",
        "Собственные значения:\n",
        "[0.87+0.5j 0.87-0.5j]\n",
        "Собственные векторы:\n",
        "[[ 0.  -0.71j  0.  +0.71j]\n",
        " [-0.71+0.j   -0.71-0.j  ]]"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9xVsO3lJCG1v"
      },
      "source": [
        "### Примеры задач"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "WfAtaqHsCG1w"
      },
      "source": [
        "__Пример 1__"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "elz4LiXCCG1y"
      },
      "source": [
        "Пусть линейный оператор задан матрицей\n",
        "\n",
        "$$A=\\begin{pmatrix}\n",
        "1 & 1\\\\ \n",
        "-1 & 3\n",
        "\\end{pmatrix}.$$\n",
        "\n",
        "Выясним, является ли вектор $x=(1,-2)$ собственным вектором этого линейного оператора."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "AtahhqX2CG12"
      },
      "source": [
        "__Решение__\n",
        "\n",
        "Предположим, что вектор $x$ является собственным вектором заданного линейного оператора, тогда должно существовать некоторое вещественное число $\\lambda$, при котором \n",
        "\n",
        "$$\\begin{pmatrix}\n",
        "1 & 1\\\\ \n",
        "-1 & 3\n",
        "\\end{pmatrix}\n",
        "\\begin{pmatrix}\n",
        "1\\\\ \n",
        "-2 \n",
        "\\end{pmatrix}=\n",
        "\\lambda\n",
        "\\begin{pmatrix}\n",
        "1\\\\ \n",
        "-2\n",
        "\\end{pmatrix}.\n",
        "$$\n",
        "\n",
        "Из этого будет следовать, что \n",
        "\n",
        "$$\\begin{cases}\n",
        "1-2=1\\cdot\\lambda \\\\ \n",
        "-1-6 = -2\\cdot \\lambda\n",
        "\\end{cases}\n",
        "\\Rightarrow\n",
        "\\begin{cases}\n",
        "\\lambda=-1\\\\ \n",
        "\\lambda=3,5\n",
        "\\end{cases}.$$\n",
        "\n",
        "Такая система не имеет смысла, следовательно, вектор $x=(1,-2)$ не является собственным вектором линейного оператора, заданного матрицей $A$."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "cY-7lS4vCG2M"
      },
      "source": [
        "__Пример 2__"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "2COh_Om7CG2O"
      },
      "source": [
        "Пусть линейный оператор задан матрицей\n",
        "\n",
        "$$A=\\begin{pmatrix}\n",
        "0 & 3 & 0\\\\ \n",
        "3 & 0 & 0\\\\\n",
        "0 & 0 & 3\n",
        "\\end{pmatrix}.$$\n",
        "\n",
        "Выясним, является ли вектор $x=(1, 1, 2)$ собственным вектором этого линейного оператора."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "rzVjSolwCG2P"
      },
      "source": [
        "__Решение__\n",
        "\n",
        "Предположим, что вектор $x$ является собственным вектором заданного линейного оператора. Аналогично методике из предыдущего примера получим:\n",
        "\n",
        "$$\\begin{pmatrix}\n",
        "0 & 3 & 0\\\\ \n",
        "3 & 0 & 0\\\\\n",
        "0 & 0 & 3\n",
        "\\end{pmatrix}\n",
        "\\begin{pmatrix}\n",
        "1\\\\\n",
        "1\\\\\n",
        "2\n",
        "\\end{pmatrix}=\n",
        "\\lambda\n",
        "\\begin{pmatrix}\n",
        "1\\\\\n",
        "1\\\\\n",
        "2\n",
        "\\end{pmatrix}\n",
        "$$\n",
        "\n",
        "$$\\Rightarrow\n",
        "\\begin{cases}\n",
        "\\lambda=3\\\\ \n",
        "\\lambda=3\\\\\n",
        "2\\lambda=6\n",
        "\\end{cases}\n",
        "\\Rightarrow\n",
        "\\lambda=3.$$\n",
        "\n",
        "Таким образом, вектор $x=(1,1,2)$ является собственным вектором линейного оператора, заданного матрицей $A$, и его собственное значение составляет $\\lambda=3.$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "qyU0wiO2CG2Q"
      },
      "source": [
        "## Практическое задание"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "sNOgFRFrCG2S"
      },
      "source": [
        "\n",
        "\n",
        "```\n",
        "# Выбран кодовый формат\n",
        "```\n",
        "\n",
        "---\n",
        "\n",
        "\n",
        "\n",
        "---\n",
        "\n",
        "\n",
        "\n",
        "__1.__ Найти собственные векторы \n",
        "\n",
        "```\n",
        "# Выбран кодовый формат\n",
        "\n",
        "```\n",
        "# Выбран кодовый формат\n",
        "```\n",
        "\n",
        "\n",
        "```\n",
        "\n",
        "и собственные значения для линейного оператора, заданного матрицей\n",
        "\n",
        "$$A=\\begin{pmatrix}\n",
        "-1 & -6\\\\ \n",
        "2 & 6\n",
        "\\end{pmatrix}.$$\n",
        "\n",
        "__2.__ Дан оператор поворота на 180 градусов, задаваемый матрицей \n",
        "\n",
        "$$A=\\begin{pmatrix}\n",
        "-1 & 0\\\\ \n",
        "0 & -1\n",
        "\\end{pmatrix}.$$\n",
        "\n",
        "Показать, что __любой__ вектор является для него собственным.\n",
        "\n",
        "__3.__ Пусть линейный оператор задан матрицей\n",
        "\n",
        "$$A=\\begin{pmatrix}\n",
        "1 & 1\\\\ \n",
        "-1 & 3\n",
        "\\end{pmatrix}.$$\n",
        "\n",
        "Установить, является ли вектор $x=(1,1)$ собственным вектором этого линейного оператора.\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "fZvLaIPW0JY1"
      },
      "source": [
        "**4.** Пусть линейный оператор задан матрицей\n",
        "\n",
        "$$A=\\begin{pmatrix} 0 & 3 & 0\\\\ 3 & 0 & 0\\\\ 0 & 0 & 3 \\end{pmatrix}.$$\n",
        "\n",
        "Установить, является ли вектор $x=(3, -3, -4)$ собственным вектором этого линейного оператора."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "FRcaWGNmCG2T"
      },
      "source": [
        "## Литература"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "32CUrSgMCG2U"
      },
      "source": [
        "1. Ильин В. А., Позняк Э. Г. Линейная алгебра: Учеб. для вузов. — 6-е изд. — М.: Физматлит, 2005.\n",
        "\n",
        "2. Фаддеев Д. К., Фаддеева В. Н. Вычислительные методы линейной алгебры. М.: ГИФМЛ, 1960.\n",
        "\n",
        "3. Уилкинсон Дж. Х. Алгебраическая проблема собственных значений. М.: Наука, 1970."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "u60X7ANcCG2V"
      },
      "source": [
        "## Дополнительные материалы\n",
        "\n",
        "1. [Собственные векторы и собственные значения в NumPy](https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.eig.html)."
      ]
    }
  ]
}